const express = require('express')
const router = express.Router()
const AboutUs = require('../models/AboutUs')
const authMiddleware = require('../middlewares/auth')

// 创建关于我们信息
router.post('/createAboutUs', authMiddleware(), async (req, res) => {
  try {
    const { companyName, contactName, contactPhone, website, companyAddress, latitude, longitude } = req.body

    const newAboutUs = new AboutUs({
      companyName,
      contactName,
      contactPhone,
      website,
      companyAddress,
      coordinates: [longitude, latitude]
    })

    const savedAboutUs = await newAboutUs.save()

    res.status(201).json({
      message: '关于我们信息创建成功',
      data: savedAboutUs
    })
  } catch (err) {
    res.status(400).json({
      message: '创建关于我们信息失败',
      error: err.message
    })
  }
})

// 获取关于我们信息
router.get('/getAboutUs', async (req, res) => {
  try {
    const aboutUs = await AboutUs.findOne().sort({ createdAt: -1 })

    if (!aboutUs) {
      return res.status(404).json({
        message: '未找到关于我们信息'
      })
    }

    res.status(200).json({
      message: '获取关于我们信息成功',
      data: {
        id: aboutUs._id,
        ...aboutUs._doc
      }
    })
  } catch (err) {
    res.status(500).json({
      message: '获取关于我们信息失败',
      error: err.message
    })
  }
})

// 更新关于我们信息
router.post('/updateAboutUs', authMiddleware(), async (req, res) => {
  try {
    const { id, companyName, contactName, contactPhone, website, companyAddress, latitude, longitude } = req.body

    const updatedAboutUs = await AboutUs.findByIdAndUpdate(
      id,
      {
        companyName,
        contactName,
        contactPhone,
        website,
        companyAddress,
        coordinates: [longitude, latitude]
      },
      { new: true }
    )

    if (!updatedAboutUs) {
      return res.status(404).json({
        message: '未找到关于我们信息'
      })
    }

    res.status(200).json({
      message: '关于我们信息更新成功',
      data: updatedAboutUs
    })
  } catch (err) {
    res.status(400).json({
      message: '更新关于我们信息失败',
      error: err.message
    })
  }
})

// 删除关于我们信息
router.post('/deleteAboutUs', authMiddleware(), async (req, res) => {
  try {
    const { id } = req.body

    const deletedAboutUs = await AboutUs.findByIdAndDelete(id)

    if (!deletedAboutUs) {
      return res.status(404).json({
        message: '未找到关于我们信息'
      })
    }

    res.status(200).json({
      message: '关于我们信息删除成功'
    })
  } catch (err) {
    res.status(500).json({
      message: '删除关于我们信息失败',
      error: err.message
    })
  }
})

module.exports = router
